More save/restore code in interrupts-enabled contest, where
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 29 Sep 2005 17:28:28 +0000 (18:28 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 29 Sep 2005 17:28:28 +0000 (18:28 +0100)
it properly belongs.
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c

index 058fd3797cc542242b7f01b6aef8d21c722885b8..d75dcd67a9f0b5bfb95d37a829f0ec59d585c781 100644 (file)
@@ -129,6 +129,7 @@ static inline void play_dead(void)
     * race between pending interrupts and restoration of handler. 
     */
 #ifdef CONFIG_SMP
+       local_irq_enable(); /* XXX Needed for smp_resume(). Clean me up. */
        smp_resume();
 #endif
        cpu_set(smp_processor_id(), cpu_online_map);
index bc596fbe09f7198293a2403b6c9b58d6b4b3579e..5a093f679540b2064870d71fd1618e54283d97cb 100644 (file)
@@ -187,10 +187,6 @@ static int __do_suspend(void *ignore)
 
        irq_resume();
 
-       xencons_resume();
-
-       xenbus_resume();
-
        time_resume();
 
 #ifdef CONFIG_SMP
@@ -200,6 +196,10 @@ static int __do_suspend(void *ignore)
 
        __sti();
 
+       xencons_resume();
+
+       xenbus_resume();
+
 #ifdef CONFIG_SMP
  out_reenable_cpus:
        for_each_cpu_mask(i, prev_online_cpus) {